// 生产计划添加

<template>
  <view>
    <mes-form ref="formTopRef" :mesForm="mesFormTop"></mes-form>
    <mes-choose-goods type="prod_plan" :top="20"></mes-choose-goods>
    <mes-goods @delete="delGoods" @edit="editGoods"></mes-goods>
    <mes-form :mesForm="mesFormBottom"></mes-form>
    <mes-button :type="2" :form="buttonForm"></mes-button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      MandatorHasMore: true,
      id: '',
      mandatorForm: {
        page: 1,
        limit: 8,
        status: 1
      },
      mesFormTop: {
        // 表单数据
        row: {
          purchase_code: '',
          purchase_time: '',
          delivery_time: '',
          workshop_id: '',
          workshop_name: ''
        },
        // 渲染数据
        items: [
          {
            title: '计划单号',
            required: true,
            slots: {
              field: 'purchase_code',
              type: 'input'
            },
            rules: [{ type: 'required', message: '请输入计划单号' }]
          },
          {
            title: '单据日期',
            slots: {
              field: 'purchase_time',
              type: 'date',
              icon: 'arrow'
            },
            rules: [{ type: 'required', message: '请选择单据日期' }]
          },
          {
            title: '交货时间',
            slots: {
              field: 'delivery_time',
              type: 'date',
              icon: 'arrow'
            },
            rules: [{ type: 'required', message: '请选择交货时间' }]
          },
          {
            title: '车间',
            required: true,
            slots: {
              field: 'workshop_name',
              type: 'select',
              icon: 'arrow',
              showSelect: () => {
                this.resetPaging1()
                this.getWorkShop()
              },
              select: {
                search: true,
                placeholder: '请输入关键词',
                options: [],
                searchEvent: (keyword) => {
                  this.getWorkShop(keyword)
                  this.resetPaging1()
                },
				
                scrolltoupper: () => {
                  if (this.mandatorForm.page > 0) {
                    this.mandatorForm.page--
                  }
                  this.getWorkShop()
                },
                scrolltolower: () => {
                  if (!this.MandatorHasMore) return
                  this.mandatorForm.page++
                  this.getWorkShop()
                },
                changeEvent: (item) => {
                  this.mesFormTop.row.workshop_id = item.id
                  this.mesFormTop.row.workshop_name = item.name
                }
              }
            },
            rules: [{ type: 'required', message: '请选择车间' }]
          }
        ]
      },
      mesFormBottom: {
        // 距离顶部距离
        top: 20,
        row: {
          remark: ''
        },
        items: [
          {
            title: '备注',
            slots: {
              field: 'remark',
              type: 'input'
            }
          }
        ]
      },
      buttonForm: {
        confirmEvent: () => {
          this.save()
        },
        text: '保存'
      }
    }
  },
  onLoad(options) {
    let id = options.id
    if (id) {
      // 编辑
      this.id = id
      this.getDetail()
    } else {
      // 添加
      this.getCode()
      this.mesFormTop.row.purchase_time = this.$tools.getCurTime(1)
      this.mesFormTop.row.delivery_time = this.$tools.getCurTime(1)
    }
    this.getWorkShop()
  },
  methods: {
    // 重置分页
    resetPaging1() {
      this.MandatorHasMore = true
      this.mandatorForm.page = 1
	  console.log( this.mesFormTop)
      this.mesFormTop.items[3].slots.select.options = []
    },
    // 获取车间
    async getWorkShop(keyword) {
      this.mandatorForm.keyword = keyword
      const res = await this.$api.source.workshop.index(this.mandatorForm)
      if (res.code == 200) {
        this.MandatorHasMore = res.data.list.length ? true : false
        this.mesFormTop.items.forEach((item) => {
          if (item.title === '车间') {
            item.slots.select.options =[...item.slots.select.options,...res.data.list]
          }
        })
      }
    },
    // 点击删除商品
    delGoods(i) {
      getApp().globalData.goods.list.splice(i, 1)
      uni.showToast({
        title: '删除成功',
        icon: 'none'
      })
    },
    // 点击编辑商品
    editGoods(i) {
      uni.navigateTo({ url: `/pages/home/prod_plan/goodsEdit?index=${i}` })
    },
    // 获取详情（编辑）
    getDetail() {
      this.$api.prod.plan
        .getdetail({ id: this.id })
        .then((res) => {
          if (res.code == 200) {
            let info_list = []
            if (res.data.info_list && res.data.info_list.length) {
              res.data.info_list.forEach((item) => {
                info_list.push({
                  goods_id: item.goods_id,
                  // 编辑商品用到的（提交参数）
                  // 商品编号（商品详情获取或者通用->商品价格接口获取）
                  goods_code: item.goods_code,
                  //  商品规格型号
                  goods_note: item.goods_note,
                  //  商品单位ID（资料->商品获取商品单位列表，用户选择）
                  goods_unit: item.unit_id,
                  //  数量（默认为1，用户修改）
                  number: item.number,
                  //  基本单位ID（商品详情获取或者通用->商品价格接口获取）
                  default_unit: item.default_unit,
                  //  基本数量（默认为1，多单位时需要换算，或者通过通用->价格变动接口格式化）
                  basic_nmber: item.basic_nmber,
                  //  商品单价（通用->商品价格获取）
                  purchase: item.purchase,
                  //  金额
                  money: item.money,
                  // 编辑商品用到的（展示参数）
                  default_unit_name: item.default_unit_name, //基本单位名称
                  // goods_name: item.goods_name //商品名称
                  // unit_name: item.unit_name, //商品单位

                  // mes-goods显示中用到的
                  unit_name: item.unit_name, //数量单位
                  goods_image: item.goods_image, //图片
                  goods_name: item.goods_name //商品名称
                  // goods_code: item.goods_code //商品编号
                  // purchase: item.purchase, //单价
                  // number: item.number //数量
                })
              })
            }
            getApp().globalData.goods.list = info_list
            this.mesFormTop.row = {
              purchase_code: res.data.purchase_code,
              purchase_time: res.data.purchase_time,
              delivery_time: res.data.delivery_time,
              workshop_id: res.data.workshop_id,
              workshop_name: res.data.workshop_name
            }
            this.mesFormBottom.row = {
              remark: res.data.remark
            }
          }
        })
        .catch()
    },
    // 保存
    save() {
      this.$refs.formTopRef.validate((valid) => {
        if (!valid) return

        let info_list = getApp().globalData.goods.list
        if (!info_list.length) {
          return this.$tools.toast('请添加商品')
        }

        let postForm = {
          id: this.id,
          purchase_code: this.mesFormTop.row.purchase_code,
          purchase_time: this.mesFormTop.row.purchase_time,
          delivery_time: this.mesFormTop.row.delivery_time,
          workshop_id: this.mesFormTop.row.workshop_id,
          remark: this.mesFormBottom.row.remark,
          info_list: []
        }

        if (info_list && info_list.length) {
          info_list.forEach((item) => {
            postForm.info_list.push({
              // 商品编号（商品详情获取或者通用->商品价格接口获取）
              goods_code: item.goods_code,
              //  商品规格型号
              goods_note: item.goods_note,
              //  商品单位ID（资料->商品获取商品单位列表，用户选择）
              goods_unit: item.goods_unit,
              //  数量（默认为1，用户修改）
              number: item.number,
              //  基本单位ID（商品详情获取或者通用->商品价格接口获取）
              default_unit: item.default_unit,
              //  基本数量（默认为1，多单位时需要换算，或者通过通用->价格变动接口格式化）
              basic_nmber: item.basic_nmber,
              //  商品单价（通用->商品价格获取）
              purchase: item.purchase,
              //  金额
              money: item.money,
              // 编辑商品用到的（展示参数）
              default_unit_name: item.default_unit_name //基本单位名称
            })
          })
        }

        postForm.info_list = JSON.stringify(postForm.info_list)
        // 调接口提交 postForm
        let api = this.$api.prod.plan.add
        // 编辑接口
        if (this.id) {
          api = this.$api.prod.plan.edit
        }
        api(postForm)
          .then((res) => {
            if (res.code == 200) {
              this.$tools.successBack(res.msg)
            }
          })
          .catch()
      })
    },
    // 获取编号
    async getCode() {
      let code = await this.$tools.getCode(31)
      if (code) {
        this.mesFormTop.row.purchase_code = code
      }
    }
  }
}
</script>


<style>
page {
  padding-bottom: 200rpx;
}
</style>
